package demo.entity;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

/**
 * @Title: Entity
 * @Description: 解盘房间
 * @author zhangdaihao
 * @date 2015-09-09 11:01:17
 * @version V1.0
 *
 */
@Entity
@Table(name = "tp_analyze_room", schema = "")
@DynamicUpdate(true)
@DynamicInsert(true)
@SuppressWarnings("serial")
public class AnalyzeRoomEntity implements java.io.Serializable {
	/** id */
	private java.lang.String id;
	/** 房间号 */
	private java.lang.String code;
	/** 房间名称 */
	private java.lang.String name;
	/** 开始时间 */
	private java.util.Date startTime;
	/** 结束时间 */
	private java.util.Date endTime;
	/** 房间类型 */
	// private java.lang.String categoryCode;
	private AnalyzeCategoryEntity category;
	/** 迈普斯观点 */
	private java.lang.String mpe;
	/** status */
	private java.lang.String status;
	/** createBy */
	private java.lang.String createBy;
	/** createName */
	private java.lang.String createName;
	/** createDate */
	private java.util.Date createDate;
	/** updateBy */
	private java.lang.String updateBy;
	/** updateName */
	private java.lang.String updateName;
	/** updateDate */
	private java.util.Date updateDate;
	/** delflag */
	private java.lang.String delflag;
	/** delDate */
	private java.lang.String delDate;

	/**房间投票*/
	private List<RoomVoteEntity> votes;
	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String id
	 */

	@Id
	@GeneratedValue(generator = "paymentableGenerator")
	@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
	@Column(name = "ID", nullable = false, length = 32)
	public java.lang.String getId() {
		return this.id;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String id
	 */
	public void setId(java.lang.String id) {
		this.id = id;
	}

	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String 房间号
	 */
	@Column(name = "CODE", nullable = true, length = 32)
	public java.lang.String getCode() {
		return this.code;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String 房间号
	 */
	public void setCode(java.lang.String code) {
		this.code = code;
	}

	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String 房间名称
	 */
	@Column(name = "NAME", nullable = true, length = 32)
	public java.lang.String getName() {
		return this.name;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String 房间名称
	 */
	public void setName(java.lang.String name) {
		this.name = name;
	}

	/**
	 * 方法: 取得java.util.Date
	 *
	 * @return: java.util.Date 开始时间
	 */
	@Column(name = "START_TIME", nullable = true)
	public java.util.Date getStartTime() {
		return this.startTime;
	}

	/**
	 * 方法: 设置java.util.Date
	 *
	 * @param: java.util.Date 开始时间
	 */
	public void setStartTime(java.util.Date startTime) {
		this.startTime = startTime;
	}

	/**
	 * 方法: 取得java.util.Date
	 *
	 * @return: java.util.Date 结束时间
	 */
	@Column(name = "END_TIME", nullable = true)
	public java.util.Date getEndTime() {
		return this.endTime;
	}

	/**
	 * 方法: 设置java.util.Date
	 *
	 * @param: java.util.Date 结束时间
	 */
	public void setEndTime(java.util.Date endTime) {
		this.endTime = endTime;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "category_code")
	public AnalyzeCategoryEntity getCategory() {
		return category;
	}

	public void setCategory(AnalyzeCategoryEntity category) {
		this.category = category;
	}

	// /**
	// *方法: 取得java.lang.String
	// *@return: java.lang.String 房间类型
	// */
	// @Column(name ="CATEGORY_CODE",nullable=true,length=32)
	// public java.lang.String getCategoryCode(){
	// return this.categoryCode;
	// }
	//
	// /**
	// *方法: 设置java.lang.String
	// *@param: java.lang.String 房间类型
	// */
	// public void setCategoryCode(java.lang.String categoryCode){
	// this.categoryCode = categoryCode;
	// }
	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String 迈普斯观点
	 */
	@Column(name = "MPE", nullable = true, length = 32)
	public java.lang.String getMpe() {
		return this.mpe;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String 迈普斯观点
	 */
	public void setMpe(java.lang.String mpe) {
		this.mpe = mpe;
	}

	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String status
	 */
	@Column(name = "STATUS", nullable = true, length = 2)
	public java.lang.String getStatus() {
		return this.status;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String status
	 */
	public void setStatus(java.lang.String status) {
		this.status = status;
	}

	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String createBy
	 */
	@Column(name = "CREATE_BY", nullable = true, length = 32)
	public java.lang.String getCreateBy() {
		return this.createBy;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String createBy
	 */
	public void setCreateBy(java.lang.String createBy) {
		this.createBy = createBy;
	}

	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String createName
	 */
	@Column(name = "CREATE_NAME", nullable = true, length = 32)
	public java.lang.String getCreateName() {
		return this.createName;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String createName
	 */
	public void setCreateName(java.lang.String createName) {
		this.createName = createName;
	}

	/**
	 * 方法: 取得java.util.Date
	 *
	 * @return: java.util.Date createDate
	 */
	@Column(name = "CREATE_DATE", nullable = true)
	public java.util.Date getCreateDate() {
		return this.createDate;
	}

	/**
	 * 方法: 设置java.util.Date
	 *
	 * @param: java.util.Date createDate
	 */
	public void setCreateDate(java.util.Date createDate) {
		this.createDate = createDate;
	}

	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String updateBy
	 */
	@Column(name = "UPDATE_BY", nullable = true, length = 32)
	public java.lang.String getUpdateBy() {
		return this.updateBy;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String updateBy
	 */
	public void setUpdateBy(java.lang.String updateBy) {
		this.updateBy = updateBy;
	}

	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String updateName
	 */
	@Column(name = "UPDATE_NAME", nullable = true, length = 32)
	public java.lang.String getUpdateName() {
		return this.updateName;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String updateName
	 */
	public void setUpdateName(java.lang.String updateName) {
		this.updateName = updateName;
	}

	/**
	 * 方法: 取得java.util.Date
	 *
	 * @return: java.util.Date updateDate
	 */
	@Column(name = "UPDATE_DATE", nullable = true)
	public java.util.Date getUpdateDate() {
		return this.updateDate;
	}

	/**
	 * 方法: 设置java.util.Date
	 *
	 * @param: java.util.Date updateDate
	 */
	public void setUpdateDate(java.util.Date updateDate) {
		this.updateDate = updateDate;
	}

	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String delflag
	 */
	@Column(name = "DELFLAG", nullable = true, length = 2)
	public java.lang.String getDelflag() {
		return this.delflag;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String delflag
	 */
	public void setDelflag(java.lang.String delflag) {
		this.delflag = delflag;
	}

	/**
	 * 方法: 取得java.lang.String
	 *
	 * @return: java.lang.String delDate
	 */
	@Column(name = "DEL_DATE", nullable = true, length = 32)
	public java.lang.String getDelDate() {
		return this.delDate;
	}

	/**
	 * 方法: 设置java.lang.String
	 *
	 * @param: java.lang.String delDate
	 */
	public void setDelDate(java.lang.String delDate) {
		this.delDate = delDate;
	}
	
	@OneToMany(cascade=CascadeType.ALL,mappedBy="room")//　OneToMany关联到了AdminRole这个类，由AdminRole这个类来维护多对一的关系，mappedBy="admin"
	@LazyCollection(LazyCollectionOption.EXTRA)//
	public List<RoomVoteEntity> getVotes() {
		return votes;
	}

	public void setVotes(List<RoomVoteEntity> votes) {
		this.votes = votes;
	}
}
